iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
Software Development

ASP.NET Core 30 天旅程系列 第 3

[Day03]-概觀&應用程式啟動

  • 分享至 

  • xImage
  •  

今天和介紹程式的進入點和一些語法。
我們先來建立一個專案
https://ithelp.ithome.com.tw/upload/images/20220918/20152200wlTyfCRCwk.png

程式進入點(Program.cs)

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

*DI及Middleware會在之後分別跟大家介紹。

Host

啟動專案時,.NET Core會建置一個「主機」。 主機會封裝所有應用程式的資源像是DI 服務Middleware元件

環境(Environment)

ASP.NET Core 中提供執行環境,例如 DevelopmentStagingProduction。 透過設定 ASPNETCORE_ENVIRONMENT 環境變數來指定應用程式執行的環境。

下列範例會在未於 Development 環境中執行時,設定例外處理和使用HSTS中介軟體

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

若想設定HSTS可於程式碼加上

builder.Services.AddHsts(options =>
{
    options.Preload = true;
    options.IncludeSubDomains = true; //啟用 includeSubDomain,它會將 HSTS 原則套用至主機子域。
    options.MaxAge = TimeSpan.FromDays(60);//設定60 天。 如果未設定,預設為 30 天。使用者的瀏覽器看到這個網域或他的子網域,就會全部改成用 HTTPS 進行連線
    options.ExcludedHosts.Add("example.com");//新增 example.com 至要排除的主機清單
});

路由(Routing)

路由會使用 由 UseRoutingUseEndpoints 註冊的一對中介軟體,.NET 6 不需要分別呼叫 。 WebApplicationBuilder會設定中介軟體管線,把UseRouting 和 UseEndpoints 包裝成 Program.cs 的中介軟體。

靜態檔案(Static files)

預設啟用靜態檔案的目錄是 wwwroot,模板有含cssjslib

HTTPS

UseHttpsRedirection強制執行https。

Run

啟動應用程式。


參考資料

那今天就到這邊囉,大家明天見(希望別再震了)!


上一篇
[Day02]-.NET CLI
下一篇
[Day04]-Middleware
系列文
ASP.NET Core 30 天旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言